// import com.alibaba.druid.FastsqlException;
// import com.alibaba.druid.sql.ast.SQLExprImpl;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
// import com.alibaba.druid.util.Utils;

// import java.io.IOException;
// import java.math.BigInteger;
// import java.util.Collections;
// import java.util.List;
#pragma once
#include <list>
#include <string>
#include <sstream>
#include "../SQLExprImpl.h"
#include "SQLLiteralExpr.h"
#include "SQLValuableExpr.h"

class SQLBinaryExpr : public SQLExprImpl, virtual public SQLLiteralExpr, virtual public SQLValuableExpr
{
public:
  string_ptr  text;

  double val;

  SQLBinaryExpr();

  SQLBinaryExpr(string_ptr  value);
  SHAREDOBJECT(SQLBinaryExpr);

  string_ptr  getText();

  double getValue();

  void setValue(string_ptr  value);

  void accept0(SQLASTVisitor_ptr visitor);

  void output(std::stringstream *  buf);

  //@Override
  int hashCode();

  // SQLBinaryExpr clone() ;
  virtual SQLObject_ptr clone();

  //@Override
  SQLObject_list_ptr  getChildren();

  //@Override
  bool equals(Object_ptr obj);
};
